package br.com.locanet.service.impl;

import java.sql.SQLException;

import br.com.locanet.bean.impl.CopiaFilme;
import br.com.locanet.bean.impl.Filme;
import br.com.locanet.dao.database.impl.FilmeDAO;
import br.com.locanet.exception.ExceptionList;
import br.com.locanet.exception.InvalidAttributeException;
import br.com.locanet.service.AbstractEntityService;

public class FilmeService extends AbstractEntityService<Filme, FilmeDAO> {
	
	
	@Override
	public void doValidateRequiredFields(Filme entity) throws ExceptionList {
		ExceptionList exceptionList = new ExceptionList();
		
		if (entity.getTitulo()==null||entity.getTitulo().isEmpty())
			exceptionList.add(new InvalidAttributeException("tituloNaoInformado"));
		if (entity.getDescricao()==null||entity.getDescricao().isEmpty())
			exceptionList.add(new InvalidAttributeException("descricaoNaoInformada"));
		if (entity.getDataChegada()==null)
			exceptionList.add(new InvalidAttributeException("dataChegadaNaoInformada"));
		if (entity.getEstilo()==null||entity.getEstilo().getId()==null)
			exceptionList.add(new InvalidAttributeException("estiloNaoInformado"));
		if (entity.getStatus()==null)
			exceptionList.add(new InvalidAttributeException("statusNaoInformado"));
		
		if (!exceptionList.getListaErros().isEmpty())
			throw exceptionList;
	}
	
	@Override
	public void doValidateBusinessRules(Filme entity) throws ExceptionList {
		
	}
	
	public void getCopiasFilmes(Filme filme) throws SQLException, ClassNotFoundException{
		CopiaFilme copia = new CopiaFilme();
		copia.setFilme(filme);
		filme.setCopias(getCopiaFilmeService().select(copia));
	}
	
	private CopiaFilmeService getCopiaFilmeService(){
		return new CopiaFilmeService();
	}
	
}
